package com.jingdianjichi.practice.api.common;

import lombok.Data;

import java.util.Collections;
import java.util.List;

/**
 * ClassName:PageInfo
 * Package:com.jingdianjichi.subject.common.entity
 * Description:
 *
 * @Author fst
 * @Create 2024/9/29 15:10
 * @Version 1.0
 */

@Data
public class PageResult<T>
{
    private Integer pageNo=1;

    private Integer pageSize=20;

    private Integer total=0;

    private Integer totalPages=0;

    private List<T> result = Collections.emptyList();

    private Integer start =1;

    private Integer end =0;

    public  Integer getPageNo()
    {
        if(pageNo==null||pageNo<0)
        {
            return 1;
        }
        return pageNo;
    }

    public Integer getPageSize()
    {
        if(pageSize==0||pageSize==null||pageSize>Integer.MAX_VALUE)
        {
            return 20;
        }
        return pageSize;
    }

    public void setRecords(List<T> result)
    {
        this.result=result;
        if(result!=null&& result.size()>0)
        {
            setTotal(result.size());
        }
    }

    public void setTotal(Integer total)
    {
        this.total=total;
        if(this.pageSize>0)
        {
            this.totalPages=(total/pageSize)+(total%this.pageSize==0?0:1);
        }
        else
        {
            this.totalPages=0;
        }
        this.start=(this.pageSize>0?(this.pageNo-1)*pageSize:0)+1;
        this.end=(this.start-1+this.pageSize*(this.pageNo>0 ? 1 : 0));
    }

    public  void setPageSize(Integer pageSize)
    {
        this.pageSize=pageSize;
    }

    public  void setPageNo(Integer pageNo)
    {
        this.pageNo=pageNo;
    }
}
